package com.wang.diaryauth.domain;

import java.io.Serializable;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

/**
* 权限表
* @TableName t_permission
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("t_permission")
public class Permission implements Serializable {

    /**
    * 主键ID
    */
    @NotNull(message="[主键ID]不能为空")
    private Long id;
    /**
    * 父ID
    */
    @NotNull(message="[父ID]不能为空")
    private Long parentId;
    /**
    * 权限名称
    */
    @Size(max= 16,message="编码长度不能超过16")
    @Length(max= 16,message="编码长度不能超过16")
    private String name;
    /**
    * 类型(1：目录 2：菜单 3：按钮)
    */
    private Integer type;
    /**
    * 菜单路由
    */
    @Size(max= 32,message="编码长度不能超过32")
    @Length(max= 32,message="编码长度不能超过32")
    private String menuUrl;
    /**
    * 菜单图标
    */
    @Size(max= 255,message="编码长度不能超过255")
    @Length(max= 255,message="编码长度不能超过255")
    private String menuIcon;
    /**
    * 管理系统中的显示顺序
    */
    @NotNull(message="[管理系统中的显示顺序]不能为空")
    private Integer sort;
    /**
    * 权限标识
    */
    @Size(max= 64,message="编码长度不能超过64")
    @Length(max= 64,message="编码长度不能超过64")
    private String permissionKey;
    /**
    * 状态(0：启用；1：禁用)
    */
    @NotNull(message="[状态(0：启用；1：禁用)]不能为空")
    private Integer status;
    /**
    * 创建时间
    */
    @NotNull(message="[创建时间]不能为空")
    private Date createTime;
    /**
    * 更新时间
    */
    @NotNull(message="[更新时间]不能为空")
    private Date updateTime;
    /**
    * 逻辑删除(0：未删除 1：已删除)
    */
    @NotNull(message="[逻辑删除(0：未删除 1：已删除)]不能为空")
    private Boolean isDeleted;


}
